<?php
namespace Amis\dataviewer;

use Amis\Basics\AmisBasics;

class Json extends AmisBasics
{
    /**
     *如果在 Table、Card 和 List 中，为"json"；在 Form 中用作静态展示，为"static-json"
     */
    public string $type        = 'json';
    public string $type_static = 'static-json';

    public function className(string $className)
    {
        $this->className = $className;
        return $this;
    }

    /**
     * json 值，如果是 string 会自动 parse
     * @param string|array $value
     * @return $this
     */
    public function value($value)
    {
        $this->value = $value;
        return $this;
    }

    /**
     * 通过数据映射获取数据链中的值
     * @param string $source
     * @return $this
     */
    public function source(string $source)
    {
        $this->source = $source;
        return $this;
    }

    /**
     * 占位文本
     * @param string $placeholder
     * @return $this
     */
    public function placeholder(string $placeholder = '-')
    {
        $this->placeholder = $placeholder;
        return $this;
    }

    /**
     * 默认展开的层级
     * @param int $levelExpand
     * @return $this
     */
    public function levelExpand(int $levelExpand = 1)
    {
        $this->levelExpand = $levelExpand;
        return $this;
    }

    /**
     * 主题，可选twilight和eighties
     * @param bool $IsTwilight
     * @return $this
     */
    public function jsonTheme(bool $IsTwilight = true)
    {
        $this->jsonTheme = $IsTwilight ? 'twilight' : 'eighties';
        return $this;
    }

    /**
     * 是否可修改
     * @param bool $mutable
     * @return $this
     */
    public function mutable(bool $mutable = false)
    {
        $this->mutable = $mutable;
        return $this;
    }

    /**
     * 是否显示数据类型
     * @param bool $displayDataTypes
     * @return $this
     */
    public function displayDataTypes(bool $displayDataTypes = false)
    {
        $this->displayDataTypes = $displayDataTypes;
        return $this;
    }
}